//
//  NSDate+TimeDate.swift
//  SingWeibo
//
//  Created by shiying on 16/1/3.
//  Copyright © 2016年 shiying. All rights reserved.
//

import Foundation

extension NSDate {
    // 将新浪返回的时间转成系统的nsdate
    class func timeDateToDate(string: String) -> NSDate {
        
        //Sun Jan 03 08:00:10 +0800 2016
        //EEE MMM dd HH:mm:ss zzz yyyy
        let df = NSDateFormatter()
        
        // 如果是在真机上需要指定区域
        df.locale = NSLocale(localeIdentifier: "en") // locale 语言环境
        
        // 指定格式
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        // 将string 转成NSDate通过指定格式
        let date = df.dateFromString(string)
        // NSDate() 创建的是当前时间
        return date ?? NSDate()
    }
    
    /*
        返回日期描述字符串:
    格式如下:
           -   刚刚(一分钟内)
           -   X分钟前(一小时内)
           -   X小时前(当天)
           -   昨天 HH:mm(昨天)
           -   MM-dd HH:mm(一年内)
           -   yyyy-MM-dd HH:mm(更早期)
    */
    func timeDateDesription() ->String {
        // 比较时间
        let calendar = NSCalendar.currentCalendar() // 日历 当前
        // 一分钟内
        if calendar.isDateInToday(self) {
            // 获取self和当前时间相差多少秒
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            // 一分钟内
            if delta < 60 {
                return "刚刚"
            } else if delta < 60 * 60 {
                // 一个小时内
                let m = delta / 60
                return "\(m) 分钟前"
            } else {
                let h = delta / (60 * 60)
                return "\(h) 小时前"
            }
        }
        var dateFormatter = ""
        
        if calendar.isDateInYesterday(self) {
            dateFormatter = "昨天 HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
            /*
                判断是否是一年内
                date1: 第一个时间
                toDate: 第二个时间
                toUnitGranularity: 比较的单位
                NSDate() 创建当前时间
                NSComparisonResult : 比较的结果
            */
            dateFormatter = "MM-dd HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedAscending {
            // 一年以外更早期
            dateFormatter = "yyyy-MM-dd HH:mm"
        }
        // 将self进行格式化
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "en")
        df.dateFormat = dateFormatter
        // 将当前对象格式化
        return df.stringFromDate(self)
    }
}